Many computer-implemented systems rely on knowledge bases to provide intelligent services to end users. For example, a Question Answering System or Virtual Agent may attempt to answer user queries by consulting a knowledge base. The performance of any such system depends in large part on the coverage and accuracy of the facts in its underlying knowledge base. Developers therefore strive to develop knowledge bases having wide coverage and high accuracy.
The task of developing a knowledge base is time-consuming, expensive, and prone to error. Further, the task of developing a knowledge base may never reach a point of completion. For instance, a developer that provides a knowledge base regarding businesses within a particular city needs to continually update the facts contained therein to keep abreast of the opening and closing of businesses.
Some developers have attempted to expedite the development process by automatically extracting facts from preexisting structured (or semi-structured) information sources, such as data stores that provide information in tables. But these sources may have limited informational scope. Further, these solutions are narrowly engineered to extract facts from specific data structures, and, as such, they may not scale to multiple subject matter domains and/or multiple sources. Further, some solutions operate in a relatively slow and cumbersome manner, and therefore cannot keep abreast of rapidly changing information. Further still, some solutions do not offer techniques for verifying the accuracy of extracted facts in a reliable, timely and cost-efficient manner. The above-noted shortcomings are cited by way of example, not limitation; other solutions may suffer from yet other deficiencies.